package vistas;

import model.Aplicacion.Agenda;
import model.Aplicacion.SearchByCombo;

import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.uqbar.commons.model.Home;
import org.uqbar.commons.model.Search;
import org.uqbar.ui.jface.AbstractSelectionListener;
import org.uqbar.ui.jface.DialogOpener;
import org.uqbar.ui.jface.base.AbstractPanel;
import org.uqbar.ui.jface.builder.FormBuilder;
import org.uqbar.ui.jface.builder.TableBuilder;
import clasesPrincipales.Ciudad;
import clasesPrincipales.Contacto;


public class BuscarContacto  extends AbstractPanel<SearchByCombo>  {

	@SuppressWarnings("unchecked")
	public BuscarContacto(Composite parent) {
		super(parent, new SearchByCombo((Home<Contacto>) Agenda.getHome(Contacto.class)));
	}
	
	protected void createMainTemplate(FormBuilder formBuilder) {
		super.createMainTemplate(formBuilder);
		this.armarGrilla();
		this.getModel().search();
	}
	
	@Override
	protected FormBuilder createFormBuilder() {
		FormBuilder formBuilder = super.createFormBuilder();
		formBuilder.setWidth(416);
		return formBuilder;
	}
	
	//Tengo problemas con el tamaño de la grilla, suele no actualizar su largo, y para q lo haga empieza a moestirar la ventana
	protected void armarGrilla() {
		new TableBuilder(this, this.getModel(), Contacto.class) 
			.addColumn(Contacto.NOMBRE, "Nombre", 100)
			.addColumn(Contacto.FECHA_NAC, "Fecha de Nac", 100)
			.addColumn(Contacto.CIUDAD, "Ciudad", 100)
			.addColumn(Contacto.TELEFONO,"Telefono",100)
			.addColumn(Contacto.MAIL,"Mail",100)
			.bindContents(Search.RESULTS)
			.bindSelection(Search.SELECTED)
			.build();
	
	}
	
	@Override
	protected void describeForm(FormBuilder formularioDeBusqueda) {
		Contacto example = this.getModel().getExample();

		formularioDeBusqueda.addText(example, Contacto.NOMBRE, "Nombre");
		formularioDeBusqueda.addText(example, Contacto.TELEFONO, "Telefono");
		formularioDeBusqueda.addText(example, Contacto.MAIL, "Mail");
		formularioDeBusqueda.addCombo(Agenda.getHome(Ciudad.class).buscarTodos(), Ciudad.NOMBRE_CIUDAD, Contacto.CIUDAD, "Ciudad", true);
	}

	@Override
	protected void addActions(FormBuilder botones) {
		botones.addButton("Buscar", new AbstractSelectionListener() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				BuscarContacto.this.getModel().search();
			}
		});

		botones.addButton("Agregar", new DialogOpener(this.getShell()) {
			@Override
			protected Control createContents(Composite parent) {
				return new AgregarUsuario(parent, new Contacto(), Agenda.getHome(Contacto.class));
			}
			protected void afterWidgetSelected() {
				BuscarContacto.this.getModel().search();
			}

		});
		botones.addButton("Editar", new DialogOpener(this.getShell()) {
			@Override
			protected Control createContents(Composite parent) {
				return new EditarUsuario(parent, BuscarContacto.this.getModel().getSelected(), Agenda.getHome(Contacto.class));
			}
			protected void afterWidgetSelected() {
				BuscarContacto.this.getModel().search();
			}
		
		});
		
	}


}
